package com.arctic.coding.marvin.car;

import lejos.nxt.NXTRegulatedMotor;

/**
 * Klasse zur Steuerung der Lenkachse des NXT
 * 
 * @author ygraf
 *
 */
public class WheelControl extends MotorControl {
	
	public final int MAX_ANGLE;
	
	/**
	 * Konstruktor mit Angabe des Motors fuer die Lenkung und Wert fuer maximalen Lenkeinschag
	 * 
	 * @param wheel Der verwendete Motor
	 */
	public WheelControl(NXTRegulatedMotor wheel, int maxAngle) {
		
		super(wheel);
		
		this.MAX_ANGLE = maxAngle; 		
	}
	
	/**
	 * Konstruktor mit Angabe des Motors fuer die Lenkung, maximaler Lenkeinschalg wird auf 65 gesetzt
	 * 
	 * @param wheel
	 */
	public WheelControl(NXTRegulatedMotor wheel) {
		this(wheel, 65);
	}	
	
	/**
	 * Methode zum Einschlagen der Lenkachse nach links
	 * 
	 * @param angle Winkel in dem die Lenkachse eingeschlagen wird
	 */
	public void turnLeft(int angle) {
		if (angle > MAX_ANGLE) {
			throw new RuntimeException("Der maximale Einschlagswinkel wurde uberschritten");
		}
		super.getMotor().rotate(angle -super.getMotor().getPosition());	
	}
	
	/**
	 * Methode zum Einschalgen der Lenkachse nach rechts
	 * 
	 * @param angle Winkel in dem die Lenkachse eingeschlagen wird
	 */
	public void turnRight(int angle) {
		if (angle > MAX_ANGLE) {
			throw new RuntimeException("Der maximale Einschlagswinkel wurde uberschritten");
		}		
		super.getMotor().rotate((angle + super.getMotor().getPosition())*(-1));
	}
	
}
